package org.example.springboot.exception;

import org.example.springboot.common.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

//@ControllerAdvice该注解表明他是全局异常处理的一个类
//@ControllerAdvice 支持通过 basePackages（或其别名 value） 指定作用范围，即：
//仅对指定包（及子包）下的 @Controller 或 @RestController 生效，避免影响项目中其他包的 Controller。
//所以里面的路径仅仅是处理GlobalExcption包下的异常类
@ControllerAdvice("org.example.springboot.controller")
public class GlobalExceptionHandle {

    @ExceptionHandler(Exception.class)  //捕获异常
    @ResponseBody//返回json串
    public Result error(Exception e){
        e.printStackTrace();//打印错误
        return Result.error();
    }

    //自定义异常
    @ExceptionHandler(CustomException.class)  //捕获异常
    @ResponseBody//返回json串
    public Result error(CustomException e){
        return Result.error(e.getCode(),e.getMessage());
    }
}
